From efb2cc9b08a236cc22caf7b15c127cbf1b2d2a74 Mon Sep 17 00:00:00 2001 From: robertlipe Date: Sun, 2 Oct 2011 19:23:42 +0000 Subject: [PATCH] More internationalization changes for Windows. --- gpsbabel/gui/mainwindow.cpp | 25 ++++++++++++------------- gpsbabel/gui/mainwindow.h | 3 ++- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/gpsbabel/gui/mainwindow.cpp b/gpsbabel/gui/mainwindow.cpp index ff67d893a..4cb1bc05c 100644 --- a/gpsbabel/gui/mainwindow.cpp +++ b/gpsbabel/gui/mainwindow.cpp @@ -204,6 +204,10 @@ MainWindow::MainWindow(QWidget* parent): QMainWindow(parent) ui.outputWindow->setReadOnly(true); + langPath = QApplication::applicationDirPath(); +#if defined (Q_OS_WIN) + langPath.append("/translations/"); +#endif // Start up in the current system language. loadLanguage(QLocale::system().name()); createLanguageMenu(); @@ -246,8 +250,6 @@ void MainWindow::createLanguageMenu(void) QString defaultLocale = QLocale::system().name(); // e.g. "de_DE" defaultLocale.truncate(defaultLocale.lastIndexOf('_')); // e.g. "de" - langPath = QApplication::applicationDirPath(); - langPath.append("/translations/"); QDir dir(langPath); QStringList fileNames = dir.entryList(QStringList("GPSBabelFE*.qm")); @@ -284,13 +286,15 @@ void MainWindow::slotLanguageChanged(QAction* action) } } -void switchTranslator(QTranslator& translator, const QString& filename) +void MainWindow::switchTranslator(QTranslator& translator, const QString& filename) { // remove the old translator qApp->removeTranslator(&translator); + QString full_filename(langPath + "/" + filename); + // load the new translator - if (translator.load(filename)) + if (translator.load(full_filename)) qApp->installTranslator(&translator); } @@ -301,15 +305,10 @@ void MainWindow::loadLanguage(const QString& rLanguage) QLocale locale = QLocale(currLang); QLocale::setDefault(locale); QString languageName = QLocale::languageToString(locale.language()); - // It's baffling to me that this is required. On Mac, we absolutely do not have to do this. -#if defined (Q_OS_WIN) -#define LANGUAGE_DIR "translations/" -#else -#define LANGUAGE_DIR "" -#endif - switchTranslator(translator, QString(LANGUAGE_DIR "gpsbabelfe_%1.qm").arg(rLanguage)); - switchTranslator(translatorCore, QString(LANGUAGE_DIR "gpsbabel__%1.qm").arg(rLanguage)); - switchTranslator(translatorQt, QString(LANGUAGE_DIR " qt_%1.qm").arg(rLanguage)); + + switchTranslator(translator, QString("gpsbabelfe_%1.qm").arg(rLanguage)); + switchTranslator(translatorCore, QString("gpsbabel__%1.qm").arg(rLanguage)); + switchTranslator(translatorQt, QString(" qt_%1.qm").arg(rLanguage)); } } diff --git a/gpsbabel/gui/mainwindow.h b/gpsbabel/gui/mainwindow.h index cf1a283c6..0f8a2456e 100644 --- a/gpsbabel/gui/mainwindow.h +++ b/gpsbabel/gui/mainwindow.h @@ -53,11 +53,12 @@ private: QTranslator translatorCore; // translation for the core application. QTranslator translatorQt; // translations for Qt. QString currLang; // currently loaded language. - QString langPath; // Path of language files. This is always fixed to /languages. + QString langPath; // Absolute path of language files. private: void loadFormats(); void loadLanguage(const QString& rLanguage); + void switchTranslator(QTranslator&, const QString&); void createLanguageMenu(); QString filterForFormat(int idx); QString ensureExtensionPresent(const QString &nanme, int idx); -- 2.30.2